#include "stm32f10x.h"                  // Device header
#include "PWM.h"
#include "DELAY.h"
#include "Motor.h"
#include "OLED.h"
#include "greyread.h"
#include "stdint.h"   //声明uint8_t时，要在头文件加上这一行


//uint64_t numlen(uint64_t num)//计算数字的长度
//{
//    uint64_t len = 1;        // 初始长度为1
//    for(; num > 9; ++len)    // 判断num是否大于9，否则长度+1
//        num /= 10;	         // 使用除法进行运算，直到num小于1
//    return len;              // 返回长度的值
//}


int main(void)

{
	int8_t flag=0;
	uint16_t Speed;
	uint8_t Sensor_status[4];
	Sensor_status[0]=Get_sensor_S1();  //s1
	Sensor_status[1]=Get_sensor_S2();  //s2
	Sensor_status[2]=Get_sensor_S3();  //s3
	Sensor_status[3]=Get_sensor_S4();  //s4
	
    PWM_Init ();
	Motor_Init ();
//	OLED_Init();		//初始化OLED屏
//	Timer_Init();		//初始化定时器
//	HC_SR04_Init();		//初始化超声波测距模块
//	
//	OLED_ShowString(1, 1, "Distance:");		//OLED屏输出字符串

	
 while(1)
 {
//	 int Distance_mm=sonar_mm();			//获取距离测量结果，单位毫米（mm）		
//		int Distance_m=Distance_mm/1000;	//转换为米（m）为单位，将整数部分放入Distance_m
//		int Distance_m_p=Distance_mm%1000;	//转换为米（m）为单位，将小数部分放入Distance_m_p
//		OLED_Clear_Part(2,1,16);			//将OLDE屏第2行清屏
//		OLED_ShowNum(2, 1,Distance_m,numlen(Distance_m));	//显示测量结果的整数部分
//		OLED_ShowChar(2, 1+numlen(Distance_m), '.');		//显示小数点
//		if(Distance_m_p<100){								//判断是否小于100毫米
//			OLED_ShowChar(2, 1+numlen(Distance_m)+1,'0');								//因为单位是米，所以小于10cm时要加0
//			OLED_ShowNum(2, 1+numlen(Distance_m)+2,Distance_m_p,numlen(Distance_m_p));	//显示测量结果的小数部分
//			OLED_ShowChar(2, 1+numlen(Distance_m)+2+numlen(Distance_m_p), 'm');			//显示单位
//		}else																			// 
//		{
//			OLED_ShowNum(2, 1+numlen(Distance_m)+1,Distance_m_p,numlen(Distance_m_p));	//显示测量结果的小数部分
//			OLED_ShowChar(2, 1+numlen(Distance_m)+1+numlen(Distance_m_p), 'm');			//显示单位
//		}
//		OLED_Clear_Part(3,1,16);			//将OLDE屏第3行清屏
//		OLED_ShowNum(3, 1,Distance_mm,numlen(Distance_mm));		//显示单位为毫米的距离结果
//		OLED_ShowString(3, 1 + numlen(Distance_mm), "mm");
//		Delay_ms(300);						//延时300毫秒
//		
//		
//		GPIO_SetBits(GPIOA,GPIO_Pin_8);         //     保留初始化GPIO 用于调控电机正反转
//	 GPIO_ResetBits(GPIOA,GPIO_Pin_9);
//	 GPIO_SetBits(GPIOA,GPIO_Pin_6);
//	 GPIO_ResetBits(GPIOA,GPIO_Pin_7);
	//
	
	
//	Speed_left1(Speed);
//	Speed_left2(Speed);
//	Speed_right1(Speed); 
//	Speed_right2(0,Speed); 
	//1000  TIM 最大  
	motor_turnright(300);
	//Speed_left2(1,500);
	
	
//	if(Speed<200  && flag==0)
//	{
//		Speed+=10;
//		Delay_ms(500);
//	}
//	else if(Speed==200 && flag==0)
//	{
//		flag=1;
//		Delay_ms(500);
//	}
//	else if(Speed>0 && flag==1)
//	{
//		Speed-=10;
//		Delay_ms(500);
//	}
//	else if(Speed==0 && flag ==1)
//	{
//		flag=0;
//		Delay_ms(500);
//	}
	
	 }
	 }
	 
	 
 
 

	

 


 


